The popularity of the Internet, and in particular, the portion of the Internet known as the World Wide Web, continues to grow. The World Wide Web is basically a collection of computers that are operatively linked together through a plurality of communication networks. Typically, users access the World Wide Web through a personal computer or like device, which is connected to the Internet via a modem of some type. For example, many users of the World Wide Web connect to the Internet using a dial-up telephone networked modem configured to establish data communications through an Internet Services Provider (ISP). Other users connect to the Internet with a faster modem, e.g., a cable modem, digital subscriber line (DSL) modem, etc.
Regardless of how a user ultimately connects to the Internet/World Wide Web, once connected the user typically accesses information available therein by using a web browser or like application. A web browser is configured to access web pages that are provided through the Internet by other computers. For example, one or more web server computers may be connected to the Internet and configured with one or more web sites or other supporting web applications. A web site typically has one or more static web pages and/or is capable of supplying one or more dynamically generated web pages that the user may selectively download, view and possible interact with.
To identify a particular web site/page the user will typically select a hyper link to the desired web site/page or may choose to manually enter a unique name for the web site/page. The most common name used for identifying a web site/page is known as the uniform resource locator (URL). By entering a URL, the user will be connected to an appropriate web server which hosts the applicable web application(s), and the requested web page will be downloaded, in this case using a hypertext transfer protocol (HTTP), to the web browser. Within the Internet itself, the selected URL is associated with a specific Internet Protocol (IP) address. This IP address takes the form of a unique numerical identifier, which has been assigned to the targeted web server. Thus, a user may also directly enter an IP address in the web browser. However, the majority of users tend to favor the use of the more easily remembered and entered URL.
When a typical web server receives a request, e.g., an HTTP request, from a web browser, it needs to handle the request. Hence, a web server process may be configured to handle the request itself, or may need to pass the request on to another process, e.g., a worker process, that is configured to handle the request. Conventional web server processes tend to listen to a particular port (e.g., “port 80”) provided by a Transmission Control Protocol/Internet Protocol (TCP/IP) kernel-mode provided service. When a request is received, the web server process either handles the request or calls for a worker process to handle the request. To determine which worker process should handle the request, most conventional web server processes either map the request to a physical file or to a dynamic application of some sort, such as a DLL or CGI process. Mapping is typically based on the extension provided at the end of the URL. For example, an “.html” extension signifies that the desired web page is in a HyperText Markup Language format. This extension could then be found, for example, in a look-up table, and associated with a specific worker process, if needed. Conversely, the .html extension may identify that the web server process can handle the request itself. There exists a plurality of extensions that may be used to identify the applicable worker process.
Once a specific worker process has been identified, the worker process is started (as needed) and the request is forwarded to the worker process. Such decisions and subsequent routing of the request are conducted by user-mode processes. Note that the web server process is a user-mode process too.
Unfortunately, there is usually a delay associated with such user-mode “process hops”. For web servers, which often receive thousands of requests each minute, the delays associated with process hops can diminish the efficiency of the web server. In certain configurations, the web server process may be required to share a common communication port with one or more worker processes. This too may further reduce the efficiency of the web server. Moreover, there can be a reduction in the robustness of the web server in certain situations, e.g., when a worker process fails to receive/complete the request, etc.
To further illustrate such problems, reference is made to FIG. 2, which depicts an exemplary conventional web server arrangement 200. Here, requests are received from a client computer, e.g., over a network and applicable interfaces (not shown), by a kernel-mode TCP/IP service 202. TCP/IP service 202 provides the request to a user-mode web server process 204 through a port. By way of example, web server process 204 may be an earlier generation IIS web server process as developed by Microsoft Corp.
As illustrated, web server process 204, when needed, can initiate a process hop to one or more user-mode worker processes 206, as represented by line 208. Worker processes 208 may take the form of any of a variety of functions, and/or applications, which are configured to handle or otherwise support certain types of requests. To determine which of worker process 206 needs to handle a given request, web server process 204 can access a mapping function 210 (e.g., a table, list, etc.) and identify an appropriate worker process based on the extension-identifying portion of the URL in the request. Alternatively, web server 204 may require the assistance of a DLL 212 in making such a decision. Here, for example DLL 212 or a like capability would identify the appropriate worker process based on the extension-identifying portion of the URL in the request.
FIG. 3 presents a flow chart depicting an exemplary conventional method 300 for handling requests received by web server arrangement 200. In step 302, the request is received by TCP/IP service 202 and passed on to web server process 204. Next, in step 304, web server 204 determines if there is a need to invoke a worker process 206. Again this is typically determined based on the extension-identifying portion of the URL. The extension-identifying portion of the URL essentially identifies the type of data associated with the defined, and consequently may be used to redirect or route the request to an applicable user-mode process. The next step, 306, is to pass or route the request to the applicable user-mode process for further handling.
As shown, in certain configurations, step 304 can be replaced or otherwise supported/enhanced by step 308, which in this example routes the request to DLL 212 or other like user-mode process to help determine which user-mode worker process 206 would be appropriate to handle the request. As in step 304, step 308 would also likely use the extension-identifying portion of the URL to help make such decisions.
As mentioned earlier, there are several drawbacks to web server arrangement 200 and associated method 300. One of the major drawbacks is the inherent delay associated with each user-mode process hop (e.g., cross-process context switch). Another is the need to multiplex or otherwise share the use of one or more communication ports between user-mode processes. Yet another is often the lack of management over the worker processes, especially, for example, should one fail during the processing of a request.
As such, there is need for improved methods, apparatuses and systems that provide an improved web server environment/design.